home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Environments / Oberon⁄F™ 1.2 / Preinstalled version / System / Docu / Math (.txt) < prev    next >
Encoding:
Oberon Document  |  1995-08-09  |  12.7 KB  |  253 lines  |  [oODC/obnF]

  1. Documents.StdDocumentDesc
  2. Documents.DocumentDesc
  3. Containers.ViewDesc
  4. Views.ViewDesc
  5. Stores.StoreDesc
  6. Documents.ModelDesc
  7. Containers.ModelDesc
  8. Models.ModelDesc
  9. Stores.ElemDesc
  10. TextViews.StdViewDesc
  11. TextViews.ViewDesc
  12. TextModels.StdModelDesc
  13. TextModels.ModelDesc
  14. TextModels.AttributesDesc
  15. Helvetica
  16. TextRulers.StdRulerDesc
  17. TextRulers.RulerDesc
  18. TextRulers.StdStyleDesc
  19. TextRulers.StyleDesc
  20. TextRulers.AttributesDesc
  21. Helvetica
  22. Helvetica
  23. Helvetica
  24. Helvetica
  25. Helvetica
  26. Helvetica
  27. Helvetica
  28. DEFINITION Math;
  29.     (* REAL precision *)
  30.     PROCEDURE Pi (): REAL;
  31.     PROCEDURE Eps (): REAL;
  32.     PROCEDURE Sqrt (x: REAL): REAL;
  33.     PROCEDURE Exp (x: REAL): REAL;
  34.     PROCEDURE Ln (x: REAL): REAL;
  35.     PROCEDURE Log (x: REAL): REAL;
  36.     PROCEDURE Power (x, y: REAL): REAL;
  37.     PROCEDURE IntPower (x: REAL; n: LONGINT): REAL;
  38.     PROCEDURE Sin (x: REAL): REAL;
  39.     PROCEDURE Cos (x: REAL): REAL;
  40.     PROCEDURE Tan (x: REAL): REAL;
  41.     PROCEDURE ArcSin (x: REAL): REAL;
  42.     PROCEDURE ArcCos (x: REAL): REAL;
  43.     PROCEDURE ArcTan (x: REAL): REAL;
  44.     PROCEDURE Sinh (x: REAL): REAL;
  45.     PROCEDURE Cosh (x: REAL): REAL;
  46.     PROCEDURE Tanh (x: REAL): REAL;
  47.     PROCEDURE ArcSinh (x: REAL): REAL;
  48.     PROCEDURE ArcCosh (x: REAL): REAL;
  49.     PROCEDURE ArcTanh (x: REAL): REAL;
  50.     PROCEDURE Max (x, y: REAL): REAL;
  51.     PROCEDURE Min (x, y: REAL): REAL;
  52.     PROCEDURE Sign (x: REAL): REAL;
  53.     PROCEDURE Floor (x: REAL): LONGINT;
  54.     PROCEDURE Ceiling (x: REAL): LONGINT;
  55.     PROCEDURE Mantissa (x: REAL): REAL;
  56.     PROCEDURE Exponent (x: REAL): LONGINT;
  57.     PROCEDURE Real (m: REAL; e: LONGINT): REAL;
  58.     (* LONGREAL precision *)
  59.     PROCEDURE LPi (): LONGREAL;
  60.     PROCEDURE LEps (): LONGREAL;
  61.     PROCEDURE LSqrt (x: LONGREAL): LONGREAL;
  62.     PROCEDURE LExp (x: LONGREAL): LONGREAL;
  63.     PROCEDURE LLn (x: LONGREAL): LONGREAL;
  64.     PROCEDURE LLog (x: LONGREAL): LONGREAL;
  65.     PROCEDURE LPower (x, y: LONGREAL): LONGREAL;
  66.     PROCEDURE LIntPower (x: LONGREAL; n: LONGINT): LONGREAL;
  67.     PROCEDURE LSin (x: LONGREAL): LONGREAL;
  68.     PROCEDURE LCos (x: LONGREAL): LONGREAL;
  69.     PROCEDURE LTan (x: LONGREAL): LONGREAL;
  70.     PROCEDURE LArcSin (x: LONGREAL): LONGREAL;
  71.     PROCEDURE LArcCos (x: LONGREAL): LONGREAL;
  72.     PROCEDURE LArcTan (x: LONGREAL): LONGREAL;
  73.     PROCEDURE LSinh (x: LONGREAL): LONGREAL;
  74.     PROCEDURE LCosh (x: LONGREAL): LONGREAL;
  75.     PROCEDURE LTanh (x: LONGREAL): LONGREAL;
  76.     PROCEDURE LArcSinh (x: LONGREAL): LONGREAL;
  77.     PROCEDURE LArcCosh (x: LONGREAL): LONGREAL;
  78.     PROCEDURE LArcTanh (x: LONGREAL): LONGREAL;
  79.     PROCEDURE LMax (x, y: LONGREAL): LONGREAL;
  80.     PROCEDURE LMin (x, y: LONGREAL): LONGREAL;
  81.     PROCEDURE LSign (x: LONGREAL): LONGREAL;
  82.     PROCEDURE LFloor (x: LONGREAL): LONGINT;
  83.     PROCEDURE LCeiling (x: LONGREAL): LONGINT;
  84.     PROCEDURE LMantissa (x: LONGREAL): LONGREAL;
  85.     PROCEDURE LExponent (x: LONGREAL): LONGINT;
  86.     PROCEDURE LReal (m: LONGREAL; e: LONGINT): LONGREAL;
  87. END Math.
  88. Module Math is a basic library for numerical computations. It offers the most frequently used functions and constants. For some additional functions, a transformation in terms of functions available in module Math is given.
  89. Constants
  90. PROCEDURE Pi (): REAL
  91. PROCEDURE LPi (): LONGREAL
  92. Returns an approximation of the value of pi.
  93. result = 3.141592...
  94. PROCEDURE Eps (): REAL
  95. PROCEDURE LEps (): LONGREAL
  96. Returns the machine epsilon for REAL and LONGREAL respectively. The machine epsilon eps is the smallest floating point number such that the sum 1.0
  97. eps can be represented exactly in a REAL (or LONGREAL) variable. Usually, the machine epsilon is 2-m where m is the number of digits used to represent the mantissa of a floating point number. Note, that MathEps() is not necessarily the smallest floating point number with the property that its sum with 1.0 is greater than 1.0, and note also, that most floating point processors offer a higher internal precision than what can be represented within REAL and LONGREAL variables.
  98. Powers and Logarithms
  99. PROCEDURE Sqrt (x: REAL): REAL
  100. PROCEDURE LSqrt (x: LONGREAL): LONGREAL
  101. Returns the square root of x.
  102. x >= 0.0
  103. result >= 0.0
  104. PROCEDURE Exp (x: REAL): REAL
  105. PROCEDURE LExp (x: LONGREAL): LONGREAL
  106. Returns ex.
  107. x <= ln(MAX(REAL))    (for Exp)
  108. x <= ln(MAX(LONGREAL))    (for LExp)
  109. result > 0.0
  110. PROCEDURE Ln (x: REAL): REAL
  111. PROCEDURE LLn (x: LONGREAL): LONGREAL
  112. Returns the natural logarithm of x.
  113. x > 0.0
  114. PROCEDURE Log (x: REAL): REAL
  115. PROCEDURE LLog (x: LONGREAL): LONGREAL
  116. Returns the logarithm to the basis 10 of x.
  117. x > 0.0
  118. PROCEDURE Power (x, y: REAL): REAL
  119. PROCEDURE LPower (x, y: LONGREAL): LONGREAL
  120. Returns xy. 
  121. x > 0.0
  122. y*ln(x) <= ln(MAX(REAL))    (for Power)
  123. y*ln(x) <= ln(MAX(LONGREAL))    (for LPower)
  124. PROCEDURE IntPower (x: REAL; n: LONGINT): REAL
  125. PROCEDURE LIntPower (x: LONGREAL; n: LONGINT): LONGREAL
  126. Returns xn.
  127. n <= floor(ln(MAX(REAL))/ln(|x|))
  128. n <= floor(ln(MAX(LONGREAL))/ln(|x|))
  129. Trigonometric and Hyperbolic Functions
  130. The arguments for all trigonometric and hyperbolic functions must be given in radians, and the inverse trigonometric and hyperbolic functions are calculated in radians (1 radian = 180/Pi degrees). At the end of this section a transformation table for additional trigonometric and hyperbolic functions is given which do not belong to the interface of the Math module, but which can easily be written in terms of the exported functions.
  131. PROCEDURE Sin (x: REAL): REAL
  132. PROCEDURE LSin (x: LONGREAL): LONGREAL
  133. Returns the sine of x.
  134. -1.0 <= result <= 1.0
  135. PROCEDURE Cos (x: REAL): REAL
  136. PROCEDURE LCos (x: LONGREAL): LONGREAL
  137. Returns the cosine of x.
  138. -1.0 <= result <= 1.0
  139. PROCEDURE Tan (x: REAL): REAL
  140. PROCEDURE LTan (x: LONGREAL): LONGREAL
  141. Returns the tangent of x. The Tan and LTan can be computed for all possible REAL and LONGREAL arguments.
  142. PROCEDURE ArcSin (x: REAL): REAL
  143. PROCEDURE LArcSin (x: LONGREAL): LONGREAL
  144. Returns the arcus sine of x.
  145. -1 <= x <= 1
  146. -pi/2 <= result <= pi/2
  147. PROCEDURE ArcCos (x: REAL): REAL
  148. PROCEDURE LArcCos (x: LONGREAL): LONGREAL
  149. Returns the arcus cosine of x.
  150. -1 <= x <= 1
  151. 0 <= result <= pi
  152. PROCEDURE ArcTan (x: REAL): REAL
  153. PROCEDURE LArcTan (x: LONGREAL): LONGREAL
  154. Returns the arcus tangent of x.
  155. -pi/2 < result < pi/2
  156. PROCEDURE Sinh (x: REAL): REAL
  157. PROCEDURE LSinh (x: LONGREAL): LONGREAL
  158. Returns the hyperbolic sine of x.
  159. |x| <= ln(MAX(REAL))    (for Sinh)
  160. |x| <= ln(MAX(LONGREAL))    (for LSinh)
  161. PROCEDURE Cosh (x: REAL): REAL
  162. PROCEDURE LCosh (x: LONGREAL): LONGREAL
  163. Returns the hyperbolic cosine of x.
  164. |x| <= ln(MAX(REAL))    (for Cosh)
  165. |x| <= ln(MAX(LONGREAL))    (for LCosh)
  166. 1.0 <= result
  167. PROCEDURE Tanh (x: REAL): REAL
  168. PROCEDURE LTanh (x: LONGREAL): LONGREAL
  169. Returns the hyperbolic tangent of x.
  170. -1.0 <= result <= 1.0
  171. PROCEDURE ArcSinh (x: REAL): REAL;
  172. PROCEDURE LArcSinh (x: LONGREAL): LONGREAL;
  173. Returns the inverse hyperbolic sine of x.
  174. PROCEDURE ArcCosh (x: REAL): REAL;
  175. PROCEDURE LArcCosh (x: LONGREAL): LONGREAL;
  176. Returns the inverse hyperbolic cosine of x.
  177. 1 <= x
  178. 0 <= result
  179. PROCEDURE ArcTanh (x: REAL): REAL;
  180. PROCEDURE LArcTanh (x: LONGREAL): LONGREAL;
  181. Returns the inverse hyperbolic tangent of x.
  182. -1 < x < 1
  183. Below you find the definition of additional trigonometric and hyperbolic functions in terms of the exported functions. The pre and post conditions can be induced from the pre and post conditions of the involved functions.
  184.         Cot (x) = 1/Math.Tan(x)
  185.         Csc (x) = 1/Math.Sin(x)
  186.         Sec (x) = 1/Math.Cos(x)
  187.         ArcCot (x) = Math.Pi()/2.0 - Math.ArcTan(x)
  188.         ArcCsc (x) = Math.ArcSin(1/x)
  189.         ArcSec (x) = Math.ArcCos(1/x)
  190.         Coth (x) = 1/Math.Tanh(x)
  191.         Csch (x) = 1/Math.Sinh(x)
  192.         Sech (x) = 1/Math.Cosh(x)
  193.         ArcCoth (x) = Math.ArcTanh(1/x)
  194.         ArcCsch (x) = Math.ArcSinh(1/x)
  195.         ArcSech (x) = Math.ArcCosh(1/x)
  196. The quadrant-correct arctan function ArcTan2(y, x) which returns the argument of the complex number x + iy in the range (-pi, pi] can be computed with the following procedure:
  197.         PROCEDURE ArcTan2 (y, x: REAL): REAL;
  198.         BEGIN
  199.             IF x = 0.0 THEN
  200.                 RETURN Math.Sign(y) * Math.Pi() / 2.0
  201.             ELSIF y = 0.0 THEN
  202.                 RETURN (1.0 - Math.Sign(x)) * Math.Pi() / 2.0
  203.             ELSE
  204.                 RETURN Math.ArcTan(y/x) + (1.0 - Math.Sign(x)) * Math.Sign(y) * Math.Pi() / 2.0
  205.             END 
  206.         END ArcTan2;
  207. Miscellaneous Functions
  208. PROCEDURE Max (x, y: REAL): REAL
  209. PROCEDURE LMax (x, y: LONGREAL): LONGREAL
  210. PROCEDURE Min (x, y: REAL): REAL
  211. PROCEDURE LMin (x, y: LONGREAL): LONGREAL
  212. Returns the maximum or minimum of x and y respectively.
  213. PROCEDURE Sign (x: REAL): REAL
  214. PROCEDURE LSign (x: LONGREAL): LONGREAL
  215. Returns the sign of x, that is 1.0 if x > 0.0, -1.0 if x < 0.0 and 0.0 if x = 0.
  216. result IN {-1.0, 0.0, 1.0}
  217. PROCEDURE Floor (x: REAL): LONGINT
  218. PROCEDURE LFloor (x: LONGREAL): LONGINT
  219. Returns the greatest integer less than or equal to x. This function is identical to ENTIER. Be aware that not all integers greater than 1.0/Eps() can be represented as REAL numbers.
  220. x < MAX(LONGINT)+1    (not explicitly checked)
  221. x >= MIN(LONGINT)    (not explicitly checked)
  222. PROCEDURE Ceiling (x: REAL): LONGINT
  223. PROCEDURE LCeiling (x: LONGREAL): LONGINT
  224. Returns the smallest integer greater than or equal to x. Be aware that not all integers greater than 1.0/Eps() can be represented as REAL numbers.
  225. x <= MAX(LONGINT)    (not explicitly checked)
  226. x > MIN(LONGINT)    (not explicitly checked)
  227. With the function Floor two other prominent functions can be expressed, namely Trunc and Frac. Trunc truncates its argument to the next nearest integer towards zero, and Frac is the fractional part of the argument. 
  228.         Trunc (x) = Math.Sign(x) * Math.Floor(ABS(x))
  229.         Frac (x) = x - Math.Sign(x) * Math.Floor(ABS(x))
  230. With this implementation both functions have the precondition x
  231. MAX(LONGINT) + 1 due to the Floor function.
  232. PROCEDURE Mantissa (x: REAL): REAL
  233. PROCEDURE LMantissa (x: LONGREAL): LONGREAL
  234. Returns the mantissa of x. The mantissa of plus infinity is 1.0, the one of minus infinity is -1.0 and the mantissa of not a number is neither 1.0 nor -1.0. 
  235. 1.0 <= |result| < 2
  236. PROCEDURE Exponent (x: REAL): LONGINT
  237. PROCEDURE LExponent (x: LONGREAL): LONGINT
  238. Returns the exponent of x such that x = Mantissa(x) * 2Exponent(x). If x represents plus or minus infinity or if x is not a number, then MAX(LONGINT) is returned.
  239. PROCEDURE Real (m: REAL; e: LONGINT): REAL
  240. PROCEDURE LReal (m: LONGREAL; e: LONGINT): LONGREAL
  241. Returns m * 2e. If the argument e is MAX(LONGINT), then infinity or not a number is returned where 
  242.  infinity is returned if m = 
  243.  1 and not a nunber otherwise. Thus for any real x the equation
  244.     x = Real(Mantissa(x), Exponent(x))
  245. holds.
  246. 1.0 <= |m| < 2    20
  247. TextControllers.StdCtrlDesc
  248. TextControllers.ControllerDesc
  249. Containers.ControllerDesc
  250. Controllers.ControllerDesc
  251. Helvetica
  252. Documents.ControllerDesc
  253.